Skip to content

fix(strix): accept legal Packrat fixture paths - #800

Open
seonghobae wants to merge 19 commits into
mainfrom
fix/strix-legal-packrat-paths
Open

fix(strix): accept legal Packrat fixture paths#800
seonghobae wants to merge 19 commits into
mainfrom
fix/strix-legal-packrat-paths

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Buyer-visible blocker

The organization-required Strix gate rejected a tracked legal Packrat fixture path containing comma and ASCII parentheses before security analysis. This prevented exact-head review of ContextualWisdomLab/aFIPC#160 even though the path is legal Git data.

Focused repair

  • admit only comma plus ASCII ( and ) in the existing bounded changed-path allowlist;
  • reject raw .. components before normalization can collapse embedded traversal;
  • retain rejection of empty/dot, absolute, CR/LF/NUL, leading/trailing whitespace, backslash, shell metacharacters, unsupported Unicode punctuation, and out-of-root resolution;
  • keep normalized paths quoted as arguments, never shell source;
  • execute the permanent regression at the literal PR head on Python 3.14 with immutable action pins, read-only permissions, no persisted checkout credential, full repository tests through coverage.py, compilation, Bash syntax, and clean-worktree checks;
  • install network-fetched test dependencies in hash-checking and binary-only mode with exact versions and wheel digests;
  • trigger on implementation, tests, workflow, CHANGELOG.md, and authoritative doctoring changes;
  • leave reviewer credentials and identities unchanged.

Test-first and exact-head evidence

The test-only lineage proved both missing legal-path support and the pre-existing embedded-traversal acceptance before production repair. Temporary materialization workflows were removed.

Exact current head: dc97cefcd44f3edeb6471660bf74afcd983b4273.

Successful exact-head gates:

  • Strix Changed Path Quality CI;
  • CodeQL PR;
  • Python Security;
  • SAST Semgrep;
  • Security Scan;
  • Secret Scan;
  • OSV-Scanner PR;
  • Scorecard PR;
  • SBOM Generation; and
  • CodeRabbit commit status.

All inline review threads are resolved or outdated. The final six-file scope is .github/workflows/strix-changed-path-quality-ci.yml, CHANGELOG.md, docs/doctoring/strix-legal-git-paths.md, scripts/ci/strix_quick_gate.sh, tests/test_strix_changed_path_policy.py, and tests/test_strix_workflow_dependency_hashes.py.

Merge gate

Merge only after fresh exact-head OpenCode/Noema review, qualifying independent non-author approval, and every branch-protection rule pass without bypass. After integration, rerun Strix for unchanged aFIPC#160; predecessor failure is not reused.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 46 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fc8bc96a-5224-4ac4-9e3e-d781cbd1ef12

📥 Commits

Reviewing files that changed from the base of the PR and between e6fc914 and c51bf92.

📒 Files selected for processing (6)
  • .github/workflows/strix-changed-path-quality-ci.yml
  • CHANGELOG.md
  • docs/doctoring/strix-legal-git-paths.md
  • scripts/ci/strix_quick_gate.sh
  • tests/test_strix_changed_path_policy.py
  • tests/test_strix_workflow_dependency_hashes.py
📝 Walkthrough

Walkthrough

Strix 변경 경로 정책이 쉼표와 ASCII 괄호를 허용하도록 변경되었습니다. 경로 순회와 셸 구문 문자는 계속 차단됩니다. 회귀 테스트와 GitHub Actions 품질 검사 워크플로가 추가되었습니다.

Changes

Strix 경로 정책

Layer / File(s) Summary
경로 정책 및 회귀 검증
scripts/ci/strix_quick_gate.sh, tests/test_strix_changed_path_policy.py, docs/doctoring/strix-legal-git-paths.md, CHANGELOG.md
경로 정규화기가 쉼표와 ASCII 괄호를 허용합니다. 경로 순회, 절대 경로, 제어 문자, 공백 모호성, 백슬래시 및 셸 구문 문자는 계속 거부합니다. 회귀 테스트와 정책 문서를 추가했습니다.
품질 검사 워크플로
.github/workflows/strix-changed-path-quality-ci.yml
지정된 pull request와 수동 실행에서 정책 테스트, Python 및 Bash 구문 검사, 작업 트리 무변경 검증을 실행합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 Strix에서 합법적인 Packrat fixture 경로를 허용하는 주요 변경을 정확하고 간결하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/strix-legal-packrat-paths

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review

Review-only exact-head request for 63fdd37232d471087ece807a9b9f7bd98991cb62. Validate the narrow Strix changed-path compatibility boundary, exact-head quality workflow, initiating aFIPC evidence, fail-closed path regressions, doctoring, and unchanged reviewer/security controls. Do not update the branch, approve from the author identity, enable bypass, or merge.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current head 63fdd37232d471087ece807a9b9f7bd98991cb62; predecessor-head review or check evidence is historical only.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head 63fdd37232d471087ece807a9b9f7bd98991cb62. I will treat predecessor-head evidence as historical only.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/strix-changed-path-quality-ci.yml:
- Around line 6-9: Update the workflow’s paths configuration to include
docs/doctoring/strix-legal-git-paths.md and CHANGELOG.md so changes to either
contract file trigger validation. In the workflow test step, replace the
single-test-file invocation with the full suite command using coverage and
pytest against tests in quiet mode.

In `@tests/test_strix_changed_path_policy.py`:
- Around line 65-84: Reject raw “..” path components before normalization in the
changed-path normalizer, and add “safe/../target.txt” to the rejected cases in
tests/test_strix_changed_path_policy.py:65-84. Update
docs/doctoring/strix-legal-git-paths.md:20-29 to retain the traversal-rejection
claim only after this fix, and remove or limit the same fail-closed claim in
CHANGELOG.md:15 until the fix is applied.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 306ffc18-d8b4-4332-a38e-0f618add47b9

📥 Commits

Reviewing files that changed from the base of the PR and between f070c50 and 63fdd37.

📒 Files selected for processing (5)
  • .github/workflows/strix-changed-path-quality-ci.yml
  • CHANGELOG.md
  • docs/doctoring/strix-legal-git-paths.md
  • scripts/ci/strix_quick_gate.sh
  • tests/test_strix_changed_path_policy.py

Comment thread .github/workflows/strix-changed-path-quality-ci.yml
Comment thread tests/test_strix_changed_path_policy.py
Comment thread .github/workflows/repair-strix-embedded-traversal.yml Fixed
Comment thread .github/workflows/repair-strix-embedded-traversal-v2.yml Fixed
Comment thread .github/workflows/strix-changed-path-quality-ci.yml Fixed
Comment thread .github/workflows/repair-strix-embedded-traversal-v3.yml Fixed

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current head f48ee444097b741092c05fa99715b2a494550099. The prior actionable findings are now implemented: raw .. components are rejected before normalization, the full repository suite runs through coverage.py and pytest, and implementation plus authoritative contract files trigger the exact-head workflow. Treat all predecessor-head evidence as historical.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review

Review-only exact-head request for f48ee444097b741092c05fa99715b2a494550099. Validate the legal Packrat path compatibility boundary, raw traversal rejection before normalization, immutable/read-only exact-head full-suite workflow, initiating aFIPC evidence, APA 7 doctoring, and unchanged reviewer/security controls. Do not update the branch, approve from the author identity, weaken gates, or merge.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head f48ee444097b741092c05fa99715b2a494550099. I will treat all predecessor-head evidence as historical only.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please retry the exact-current-head review for f48ee444097b741092c05fa99715b2a494550099; the earlier retry was rate-limited. All exact-head workflows are now complete and successful, and both predecessor review findings are implemented and resolved.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will retry the review for exact head f48ee444097b741092c05fa99715b2a494550099. I will treat all predecessor-head evidence as historical.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current head f48ee444097b741092c05fa99715b2a494550099. The previous two findings are implemented and their threads are resolved; verify the corrected raw-traversal boundary and full-suite exact-head workflow rather than predecessor head 63fdd37232d471087ece807a9b9f7bd98991cb62.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head f48ee444097b741092c05fa99715b2a494550099.

I will verify the raw-traversal rejection boundary and the full-suite exact-head workflow. I will treat 63fdd37232d471087ece807a9b9f7bd98991cb62 as historical only.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

Addressed the remaining Scorecard Pinned-Dependencies finding on exact head 10ae16200bd049f91f2c724b8608ef93280dbaeb. Test-first commit a4f810dd53f64fe0b3d7f403888d9f3b9ff7fd93 introduced a failing permanent contract for pip hash-checking mode, all six exact wheel digests, and workflow trigger coverage. Implementation commit 968b57b833ef473fccdd60db0bbf362e8b398f94 now uses --only-binary=:all: --require-hashes and PyPI-published SHA-256 values for the CPython 3.14/Linux x86-64 artifacts; doctoring commit 10ae16200bd049f91f2c724b8608ef93280dbaeb records the trust boundary, rollback procedure, and APA 7 primary references. The thread is intentionally left for independent automated disposition because the thread-resolution mutation was unavailable; no review evidence is being treated as resolved until GitHub records it so.

@seonghobae
seonghobae enabled auto-merge (squash) August 6, 2026 23:33

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only request for exact current head dc97cefcd44f3edeb6471660bf74afcd983b4273. Validate the bounded legal-path expansion, pre-normalization raw .. rejection, quoted argv use, requirements-file hash-checking mode, complete exact-head test/security matrix, and absence of temporary branch-writing workflows. Do not update or merge.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Review-only request for exact current head dc97cefcd44f3edeb6471660bf74afcd983b4273 against protected main f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. Strix Changed Path Quality CI and every exact-head CodeQL, Python Security, Semgrep, Security Scan, Secret Scan, OSV, Scorecard, and SBOM run are complete and successful; all inline threads are resolved. The pip hash-checking failure was repaired test-first by materializing exact package/digest pairs in a requirements file and installing it through --require-hashes -r, without broadening token or path policy. Validate legal comma/parenthesis acceptance, pre-normalization raw .. rejection, shell-safe argument boundaries, dependency hashes, and full-suite evidence. Do not mutate the branch, approve as author, or merge; submit actionable findings or a formal exact-head review.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head dc97cefcd44f3edeb6471660bf74afcd983b4273 against main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I will validate the stated path-policy boundary, raw traversal rejection, argument handling, dependency hash enforcement, workflow coverage, and security controls. I will treat prior-head evidence as historical only. I will not mutate, approve, bypass, or merge the branch.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact current head dc97cefcd44f3edeb6471660bf74afcd983b4273, focusing on lexical path safety, traversal rejection before normalization, supply-chain hash provenance, least privilege, and whether current-head evidence supports every doctoring claim. Do not mutate or merge.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@opencode-agent review
@cwl-noema-review review

Read-only exact-head review requested for dc97cefcd44f3edeb6471660bf74afcd983b4273. The complete quality, security, and supply-chain checks and CodeRabbit status are successful; all review threads are resolved and auto-merge is armed. Verify the narrow legal-path allowance, raw .. rejection before normalization, remaining path/shell protections, hash-locked Python 3.14 full-suite validation, and unchanged reviewer credentials. Submit formal APPROVE only if no actionable defect remains. Do not mutate or manually merge.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 8 minutes and 48 seconds before sending another message.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review

Review exact head dc97cefcd44f3edeb6471660bf74afcd983b4273 against protected main. Verify the narrowly expanded legal-path character set, raw embedded-.. rejection before normalization, quoted-argument use, dependency hash contract, exact-head/full-suite workflow, six-file final scope, successful checks, and zero unresolved current findings. Review only; do not update, approve as author, merge, release, alter credentials, or weaken protection.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review

Review exact head dc97cefcd44f3edeb6471660bf74afcd983b4273 read-only. Strix Changed Path Quality 31131219597, CodeQL 31131221370, Python Security 31131222178, SAST Semgrep 31131222029, SBOM 31131222143, Scorecard 31131222454, Security Scan 31131224310, Secret Scan 31131224951, OSV 31131228051, and CodeRabbit status are successful; all current and predecessor inline findings are resolved or outdated. Verify the allowlist admits only comma and ASCII parentheses while rejecting raw .. path components before normalization, absolute/empty/dot paths, CR/LF/NUL, leading/trailing whitespace, backslashes, shell metacharacters, unsupported Unicode punctuation, and out-of-root resolution. Confirm normalized paths remain quoted arguments, never shell source; the permanent quality workflow triggers on implementation, tests, doctoring, and CHANGELOG and runs the full repository suite with coverage, compilation, Bash syntax, and clean-worktree checks using immutable actions and hash-locked binary-only dependencies. Submit a qualifying non-author approval only if exact-head evidence is complete.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review review

Independently review exact head dc97cefcd44f3edeb6471660bf74afcd983b4273 read-only, focusing on legal-Git-path compatibility, pre-normalization traversal rejection, shell argument confinement, immutable action/dependency pins, full quality trigger coverage, and absence of any branch-writing repair workflow. Submit a current-head verdict only; do not mutate or merge.

@opencode-agent
opencode-agent Bot force-pushed the fix/strix-legal-packrat-paths branch from dc97cef to c51bf92 Compare August 7, 2026 00:15

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head request for c51bf92cfa614c83d63bee73bc069ebd242a941c. Validate the legal Git path allowlist, pre-normalization raw .. rejection, quoted-argument boundary, full repository coverage gate, hash-locked binary-only tooling, and all successful exact-head security/supply-chain checks. Do not mutate the branch or merge.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head c51bf92cfa614c83d63bee73bc069ebd242a941c, focusing on legal-path compatibility without traversal/shell expansion, fail-closed normalization, immutable tooling, and exact-head Strix gate restoration for downstream repositories. Do not mutate the branch or merge.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review
@coderabbitai review

Review exact head c51bf92cfa614c83d63bee73bc069ebd242a941c read-only. All current-head quality, security, and supply-chain workflows are successful; every inline thread is resolved or outdated. Verify the allowlist admits only comma and ASCII parentheses while rejecting raw .. components before normalization, absolute/empty/dot paths, CR/LF/NUL, leading/trailing whitespace, backslashes, shell metacharacters, unsupported Unicode punctuation, and out-of-root resolution. Confirm paths remain quoted arguments rather than shell source, the permanent workflow covers implementation/tests/doctoring/CHANGELOG and runs the full suite with immutable actions and hash-locked binary-only dependencies, and no branch-writing repair workflow remains. Submit a qualifying non-author approval only if exact-head evidence is complete; do not mutate or bypass protection.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head='c51bf92cfa614c83d63bee73bc069ebd242a941c'
printf '%s\n' '== checked-out commit =='
git rev-parse HEAD
printf '%s\n' '== expected commit object =='
git rev-parse "${expected_head}^{commit}"
printf '%s\n' '== pull-request metadata and checks =='
gh pr view 800 --repo ContextualWisdomLab/.github \
  --json headRefOid,baseRefOid,changedFiles,files,reviews,statusCheckRollup \
  --jq '{headRefOid, baseRefOid, changedFiles, files: [.files[].path], reviews: [.reviews[] | {author: .author.login, state}], checks: [.statusCheckRollup[] | {name, conclusion, status}]}'
printf '%s\n' '== exact diff name/status =='
git diff --name-status f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae "${expected_head}"
printf '%s\n' '== source and test outlines =='
ast-grep outline scripts/ci/strix_quick_gate.sh --items all || true
ast-grep outline tests/test_strix_changed_path_policy.py --items all || true
printf '%s\n' '== relevant workflow paths and write-permission indicators =='
rg -n -C 3 '^(on:|permissions:|concurrency:|jobs:)|pull_request|workflow_dispatch|actions/(checkout|setup-python)@|pip |pytest|coverage|git (push|commit|checkout -b)|gh (pr|api)|contents: write|pull-requests: write' \
  .github/workflows/strix-changed-path-quality-ci.yml .github/workflows || true
printf '%s\n' '== changed-path policy and shell-boundary indicators =='
rg -n -C 4 'normalize_changed_file_path|allowed|allowlist|\.\.|realpath|printf|read -r|--|eval|sh -c|bash -c|git diff|changed' \
  scripts/ci/strix_quick_gate.sh tests/test_strix_changed_path_policy.py || true
printf '%s\n' '== complete exact diff =='
git diff --no-ext-diff --unified=80 f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae "${expected_head}" -- \
  .github/workflows/strix-changed-path-quality-ci.yml \
  scripts/ci/strix_quick_gate.sh \
  tests/test_strix_changed_path_policy.py \
  docs/doctoring/strix-legal-git-paths.md \
  CHANGELOG.md

Length of output: 180775


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/.github'
head='c51bf92cfa614c83d63bee73bc069ebd242a941c'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

printf '%s\n' '== exact commits and worktree =='
printf 'HEAD: '; git rev-parse HEAD
printf 'requested: '; git rev-parse "${head}^{commit}"
git status --short
printf '%s\n' '== PR head, changed files, reviews, and check conclusions =='
gh pr view 800 --repo "$repo" \
  --json headRefOid,baseRefOid,files,reviews,statusCheckRollup \
  --jq '{headRefOid, baseRefOid, files: [.files[].path], reviews: [.reviews[] | {author: .author.login, state}], checks: [.statusCheckRollup[] | {name, status, conclusion}]}'
printf '%s\n' '== all changed paths at requested head =='
git diff --name-status "$base" "$head"
printf '%s\n' '== dependency contract outline and source =='
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all
cat -n tests/test_strix_workflow_dependency_hashes.py
printf '%s\n' '== complete new workflow =='
cat -n .github/workflows/strix-changed-path-quality-ci.yml
printf '%s\n' '== writes or remote mutation commands in new workflow =='
rg -n -i -C 2 'permissions:.*write|contents:\s*write|pull-requests:\s*write|issues:\s*write|actions:\s*write|git\s+(push|commit|tag)|gh\s+(api|pr)|curl\s+.*-X\s*(POST|PUT|PATCH|DELETE)' \
  .github/workflows/strix-changed-path-quality-ci.yml || true
printf '%s\n' '== tests for unsupported Unicode punctuation and required triggers =='
rg -n -C 3 'Unicode|unicode|punctuation|[“”‘’—–]|path filter|paths:|CHANGELOG|doctoring|workflow|hash|require-hashes|only-binary' \
  tests/test_strix_changed_path_policy.py tests/test_strix_workflow_dependency_hashes.py \
  .github/workflows/strix-changed-path-quality-ci.yml
printf '%s\n' '== diff integrity =='
git diff --check "$base" "$head"

Length of output: 20506


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='c51bf92cfa614c83d63bee73bc069ebd242a941c'
base='e6fc91416c4fb13febd07b985c6e9c74fe888306'

printf '%s\n' '== actual PR diff scope =='
git diff --name-status "$base" "$head"
git diff --check "$base" "$head"
printf '%s\n' '== actual PR change summary =='
git diff --stat "$base" "$head"
printf '%s\n' '== test-first and implementation commit subjects =='
git log --format='%H %s' --ancestry-path "$base..$head" -- \
  .github/workflows/strix-changed-path-quality-ci.yml \
  scripts/ci/strix_quick_gate.sh \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  docs/doctoring/strix-legal-git-paths.md \
  CHANGELOG.md
printf '%s\n' '== public PyPI wheel hash comparison =='
expected=$(
  cat <<'EOF'
coverage 7.15.2 b9a6367e4aff723e8ee8190836836124284e8fcd4265e307c844010cfa074f3f
iniconfig 2.1.0 9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760
packaging 26.2 5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e
pluggy 1.6.0 e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
pygments 2.20.0 81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
pytest 9.1.1 37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
EOF
)
while read -r package version digest; do
  [ -n "$package" ] || continue
  found=$(
    curl --fail --silent --show-error --location \
      "https://pypi.org/pypi/${package}/${version}/json" |
      jq -r --arg digest "$digest" \
        '[.urls[] | select(.packagetype == "bdist_wheel" and .digests.sha256 == $digest) | .filename] | join(",")'
  )
  printf '%s==%s: %s\n' "$package" "$version" "${found:-MISSING}"
done <<<"$expected"
printf '%s\n' '== changed-path normalizer lines =='
sed -n '389,441p' scripts/ci/strix_quick_gate.sh

Length of output: 6301


@seonghobae Exact-head review completed for c51bf92cfa614c83d63bee73bc069ebd242a941c.

I found no actionable defects in the requested scope.

  • The actual PR scope contains six files. It matches the stated final scope.
  • The normalizer permits only the added comma and ASCII parenthesis characters.
  • The normalizer rejects raw .. components before normalization.
  • The normalizer retains the specified fail-closed checks for empty, dot, absolute, control-character, whitespace, backslash, shell-punctuation, unsupported Unicode-punctuation, and out-of-root paths.
  • Downstream operations use normalized paths as quoted arguments. They do not use paths as shell source.
  • The workflow checks out the explicit PR head with persisted credentials disabled.
  • The workflow has contents: read permission and no branch-writing or remote-mutation command.
  • The workflow runs the full tests suite through coverage, Python compilation, Bash syntax validation, and a clean-worktree check.
  • The workflow triggers on the implementation, both regression contracts, doctoring document, changelog, and its own definition.
  • The requirements-file install uses --only-binary=:all: and --require-hashes.
  • All six recorded SHA-256 values match published PyPI wheels.
  • The current-head quality and security checks reported success.

I did not submit an approval. The command requested a review, not the explicit @coderabbitai approve command required for an approval action.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Final read-only review for exact head c51bf92cfa614c83d63bee73bc069ebd242a941c. The permanent Strix path-quality gate plus CodeQL, Python Security, SAST, Security Scan, Secret Scan, OSV, Scorecard, and SBOM are successful on this head; inline threads are resolved or outdated. Verify the bounded legal-path allowlist, raw .. rejection, immutable dependency pins, full-suite coverage/docstrings, and absence of transient branch writers. Submit a qualifying non-author approval only if no actionable finding remains. Do not mutate the branch, synthesize author approval, bypass protections, or merge.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/.github'
head='c51bf92cfa614c83d63bee73bc069ebd242a941c'

printf '%s\n' '== exact head =='
printf 'checked out: '; git rev-parse HEAD
printf 'requested:   '; git rev-parse "${head}^{commit}"

printf '%s\n' '== PR metadata, changed files, and checks =='
gh pr view 800 --repo "$repo" \
  --json headRefOid,baseRefOid,files,statusCheckRollup,reviews \
  --jq '{headRefOid, baseRefOid, files: [.files[].path], checks: [.statusCheckRollup[] | {name, status, conclusion}], reviews: [.reviews[] | {author: .author.login, state}]}'

base="$(gh pr view 800 --repo "$repo" --json baseRefOid --jq .baseRefOid)"
printf '%s\n' '== exact PR diff scope =='
git diff --name-status "$base" "$head"
git diff --check "$base" "$head"

printf '%s\n' '== workflow =='
cat -n .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== workflow write or mutable-reference indicators =='
rg -n -i -C 2 \
  'contents:\s*write|pull-requests:\s*write|issues:\s*write|actions:\s*write|git\s+(push|commit|tag)|gh\s+(api|pr)|curl.*-X\s*(POST|PUT|PATCH|DELETE)|actions/(checkout|setup-python)@(main|master|v[0-9]+)$' \
  .github/workflows/strix-changed-path-quality-ci.yml || true

printf '%s\n' '== normalizer and downstream path use =='
rg -n -C 12 \
  'normalize_changed_file_path|allowed|raw component|realpath|git diff|read -r|printf|eval|sh -c|bash -c' \
  scripts/ci/strix_quick_gate.sh

printf '%s\n' '== test and dependency-contract outlines =='
ast-grep outline tests/test_strix_changed_path_policy.py --items all
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all

printf '%s\n' '== test-policy assertions =='
rg -n -C 5 \
  'Packrat|comma|parenthes|traversal|absolute|control|whitespace|backslash|shell|Unicode|out.of.root|require-hashes|only-binary|paths:' \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== doctoring and changelog =='
cat -n docs/doctoring/strix-legal-git-paths.md
tail -n 40 CHANGELOG.md

printf '%s\n' '== relevant diff =='
git diff --no-ext-diff --unified=30 "$base" "$head" -- \
  .github/workflows/strix-changed-path-quality-ci.yml \
  scripts/ci/strix_quick_gate.sh \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  docs/doctoring/strix-legal-git-paths.md \
  CHANGELOG.md

Length of output: 101675


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== published PyPI wheel hash matches =='
while read -r package version digest; do
  printf '%s==%s: ' "$package" "$version"
  curl --fail --silent --show-error --location \
    "https://pypi.org/pypi/${package}/${version}/json" |
    jq -r --arg digest "$digest" \
      '[.urls[] | select(.packagetype == "bdist_wheel" and .digests.sha256 == $digest) | .filename] | if length > 0 then join(", ") else "MISSING" end'
done <<'EOF'
coverage 7.15.2 b9a6367e4aff723e8ee8190836836124284e8fcd4265e307c844010cfa074f3f
iniconfig 2.1.0 9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760
packaging 26.2 5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e
pluggy 1.6.0 e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
pygments 2.20.0 81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
pytest 9.1.1 37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
EOF

printf '%s\n' '== pinned action release tags =='
for spec in \
  'actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 v7.0.0' \
  'actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 v7.0.0'
do
  read -r repository sha tag <<<"$spec"
  printf '%s @ %s: ' "$repository" "$tag"
  gh api "repos/${repository}/git/ref/tags/${tag}" --jq '.object.sha' || true
  printf 'pinned: %s\n' "$sha"
done

Length of output: 2167


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== changed-path policy test references =='
rg -n -i -C 5 \
  'normalize_changed_file_path|changed.path|unicode|punctuation|[“”‘’—–]|safe/../target|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  tests scripts/ci \
  -g '*.py' -g '*.sh'

printf '%s\n' '== test files that invoke the Strix quick gate =='
rg -n -C 4 \
  'strix_quick_gate\.sh|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  tests \
  -g '*.py' -g '*.sh'

Length of output: 144507


@seonghobae I found one actionable defect on exact head c51bf92cfa614c83d63bee73bc069ebd242a941c.

  • Line 61 in .github/workflows/strix-changed-path-quality-ci.yml runs only python -m coverage run -m pytest tests -q.
  • The repository also has the executable regression suite scripts/ci/test_strix_quick_gate.sh.
  • That suite contains Strix changed-path fail-closed cases. These include Unicode slash-lookalike and bidi-control rejection.
  • pytest tests does not execute this shell suite.
  • Therefore, the workflow does not run the claimed complete repository test suite. It also does not validate all stated changed-path security boundaries on this workflow.

Please add the supported command that runs scripts/ci/test_strix_quick_gate.sh to this exact-head quality workflow. Keep the existing pytest command. I did not approve the pull request.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Perform a fresh independent exact-head review of c51bf92cfa614c83d63bee73bc069ebd242a941c against protected main e6fc91416c4fb13febd07b985c6e9c74fe888306. Review only: do not mutate the branch, synthesize author approval, bypass protections, merge, release, or publish.

Strix Changed Path Quality CI, Python Security, Security Scan, CodeQL, Semgrep, Secret Scan, OSV, Scorecard, and SBOM are successful on this head, CodeRabbit commit status is successful, and every review thread is resolved. Verify the bounded legal path alphabet, raw .. rejection before normalization, quoted argument-only use, full-suite coverage gate, hash-pinned binary-only test dependencies, Python 3.14 execution, authoritative doctoring/CHANGELOG triggers, and absence of temporary repair workflows. Submit actionable findings or a formal exact-head verdict.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/.github'
head='c51bf92cfa614c83d63bee73bc069ebd242a941c'
base='e6fc91416c4fb13febd07b985c6e9c74fe888306'

printf '%s\n' '== exact commit identity =='
printf 'checked-out: '; git rev-parse HEAD
printf 'requested:   '; git rev-parse "${head}^{commit}"
printf 'base:        '; git rev-parse "${base}^{commit}"

printf '%s\n' '== pull request metadata and current checks =='
gh pr view 800 --repo "$repo" \
  --json headRefOid,baseRefOid,files,reviews,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,files:[.files[].path],reviews:[.reviews[]|{author:.author.login,state}],checks:[.statusCheckRollup[]|{name,status,conclusion}]}'

printf '%s\n' '== exact diff scope and whitespace errors =='
git diff --name-status "$base" "$head"
git diff --check "$base" "$head"

printf '%s\n' '== workflow definition =='
cat -n .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== workflow trigger, test, pin, permission, and write indicators =='
rg -n -C 4 \
  '^(on:|permissions:|concurrency:|jobs:)|pull_request|workflow_dispatch|paths:|actions/(checkout|setup-python)@|persist-credentials|python-version|pip |require-hashes|only-binary|coverage|pytest|test_strix_quick_gate|py_compile|bash -n|git diff --exit-code|contents:\s*(read|write)|pull-requests:\s*write|git\s+(push|commit|tag)|gh\s+(api|pr)|curl.*-X\s*(POST|PUT|PATCH|DELETE)' \
  .github/workflows/strix-changed-path-quality-ci.yml || true

printf '%s\n' '== changed-path normalizer and path consumers =='
rg -n -C 12 \
  'normalize_changed_file_path|allowed|raw.*\.\.|\.\.|realpath|read -r|printf|git diff|eval|sh -c|bash -c|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  scripts/ci/strix_quick_gate.sh

printf '%s\n' '== regression-contract outlines =='
ast-grep outline tests/test_strix_changed_path_policy.py --items all
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all

printf '%s\n' '== regression-contract assertions and shell suite coverage =='
rg -n -C 5 \
  'Packrat|comma|parenthes|traversal|absolute|control|whitespace|backslash|shell|Unicode|out.of.root|require-hashes|only-binary|test_strix_quick_gate|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  scripts/ci/test_strix_quick_gate.sh || true

printf '%s\n' '== doctoring and changelog entries =='
cat -n docs/doctoring/strix-legal-git-paths.md
tail -n 50 CHANGELOG.md

printf '%s\n' '== complete relevant diff =='
git diff --no-ext-diff --unified=40 "$base" "$head" -- \
  .github/workflows/strix-changed-path-quality-ci.yml \
  scripts/ci/strix_quick_gate.sh \
  scripts/ci/test_strix_quick_gate.sh \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  docs/doctoring/strix-legal-git-paths.md \
  CHANGELOG.md

Length of output: 203326


🏁 Script executed:

#!/bin/bash
set -euo pipefail

log='/tmp/coderabbit-shell-logs/shell-output-33KwfR'

printf '%s\n' '== exact identity and GitHub metadata from prior inspection =='
sed -n '1,120p' "$log"

printf '%s\n' '== focused workflow test commands =='
nl -ba .github/workflows/strix-changed-path-quality-ci.yml | sed -n '50,70p'

printf '%s\n' '== shell regression cases that the workflow omits =='
nl -ba scripts/ci/test_strix_quick_gate.sh | sed -n '8978,9000p'

Length of output: 10115


@seonghobae Exact-head review verdict: request changes.

I verified the checked-out commit, pull request head, and requested head as c51bf92cfa614c83d63bee73bc069ebd242a941c. The base is e6fc91416c4fb13febd07b985c6e9c74fe888306. The pull request changes six files. The current quality and security checks report success.

I found one actionable defect.

  • Line 61 in .github/workflows/strix-changed-path-quality-ci.yml runs only python -m coverage run -m pytest tests -q.
  • The workflow does not run scripts/ci/test_strix_quick_gate.sh.
  • That executable suite includes shell-only changed-path regressions. These include Unicode slash-lookalike and bidi-control rejection.
  • Therefore, the workflow does not run the complete repository test suite as its doctoring document claims.
  • A successful exact-head-path-policy run does not provide evidence for these omitted regression cases.

Add bash scripts/ci/test_strix_quick_gate.sh to the exact-head verification step. Keep the existing pytest command.

The remaining inspected controls are correctly bounded. The workflow uses the explicit PR head, read-only contents permission, disabled checkout credentials, immutable action revisions, Python 3.14, and binary-only hash-verified dependencies. The normalizer limits the compatibility change to commas and ASCII parentheses. It rejects raw .. components before normalization.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Review exact live head c51bf92cfa614c83d63bee73bc069ebd242a941c. Strix Changed Path Quality CI, CodeQL, Python Security, SAST, Security Scan, Secret Scan, OSV, Scorecard, and SBOM are successful; every review thread is resolved or outdated. Verify the final six-file diff admits only comma and ASCII parentheses, rejects raw .. components before normalization, preserves absolute/empty/dot/control/whitespace/backslash/shell/Unicode/out-of-root rejection, keeps paths as quoted arguments, runs the complete central tests, and retains hash-locked dependency installation and immutable action pins.

Submit a formal GitHub review with state APPROVED only if no actionable issue remains. A comment-only verdict is insufficient. Do not update the branch, reuse predecessor evidence, approve from the author identity, merge, release, or alter protections. Native auto-merge is enabled and remains subordinate to exact-head independent approval and branch protection.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/.github'
head='c51bf92cfa614c83d63bee73bc069ebd242a941c'

printf '%s\n' '== exact identity =='
printf 'checked out: '; git rev-parse HEAD
printf 'requested:   '; git rev-parse "${head}^{commit}"

printf '%s\n' '== pull request metadata and checks =='
gh pr view 800 --repo "$repo" \
  --json headRefOid,baseRefOid,files,reviews,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,files:[.files[].path],reviews:[.reviews[]|{author:.author.login,state}],checks:[.statusCheckRollup[]|{name,status,conclusion}]}'

base="$(gh pr view 800 --repo "$repo" --json baseRefOid --jq '.baseRefOid')"
printf '%s\n' '== exact PR diff scope and integrity =='
git diff --name-status "$base" "$head"
git diff --check "$base" "$head"

printf '%s\n' '== workflow definition =='
cat -n .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== normalizer and path consumers =='
rg -n -C 16 \
  'normalize_changed_file_path|allowed|raw.*\.\.|\.\.|realpath|read -r|printf|git diff|eval|sh -c|bash -c|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  scripts/ci/strix_quick_gate.sh

printf '%s\n' '== regression contracts and shell-suite cases =='
ast-grep outline tests/test_strix_changed_path_policy.py --items all
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all
rg -n -C 4 \
  'Packrat|comma|parenthes|traversal|absolute|control|whitespace|backslash|shell|Unicode|out.of.root|require-hashes|only-binary|test_strix_quick_gate|STRIX_TEST_CHANGED_FILES_OVERRIDE' \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  scripts/ci/test_strix_quick_gate.sh \
  .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== complete reviewed diff =='
git diff --no-ext-diff --unified=50 "$base" "$head" -- \
  .github/workflows/strix-changed-path-quality-ci.yml \
  scripts/ci/strix_quick_gate.sh \
  scripts/ci/test_strix_quick_gate.sh \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py \
  docs/doctoring/strix-legal-git-paths.md \
  CHANGELOG.md

Length of output: 202578


@seonghobae Exact-head review verdict: request changes.

I found one actionable defect on c51bf92cfa614c83d63bee73bc069ebd242a941c.

  • Line 61 in .github/workflows/strix-changed-path-quality-ci.yml runs only python -m coverage run -m pytest tests -q.
  • The workflow does not run scripts/ci/test_strix_quick_gate.sh.
  • That shell suite contains changed-path regression cases that pytest tests does not execute. These include Unicode slash-lookalike rejection and bidi-control rejection.
  • Therefore, the workflow does not run the complete central test suite. It also cannot provide exact-head evidence for all documented changed-path boundaries.

Add this command to the verification step. Keep the existing pytest command.

bash scripts/ci/test_strix_quick_gate.sh

I did not approve the pull request.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

Exact-current-head read-only review request for c51bf92cfa614c83d63bee73bc069ebd242a941c.

The exact-head Strix quality contract and all current security/supply-chain workflows succeeded. All visible inline findings are resolved or outdated. Review this head only.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Do not update the branch, synthesize approval, bypass protection, merge, tag, release, or publish.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 1 minutes and 44 seconds before sending another message.

Copy link
Copy Markdown
Contributor Author

Exact-head review request for c51bf92cfa614c83d63bee73bc069ebd242a941c. The current six-file scope has successful exact-head Strix Changed Path Quality CI, CodeQL, Python Security, Semgrep, Security Scan, Secret Scan, OSV, Scorecard, and SBOM runs, and every inline thread is resolved. Review only this head against protected main; predecessor evidence does not transfer. No branch mutation, author approval, or merge bypass is authorized.

@coderabbitai review
@cwl-noema-review
@opencode-agent

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/.github'
head='c51bf92cfa614c83d63bee73bc069ebd242a941c'

printf '%s\n' '== commit identity =='
printf 'checked-out: '; git rev-parse HEAD
printf 'requested:   '; git rev-parse "${head}^{commit}"

printf '%s\n' '== pull request head, base, files, and checks =='
gh pr view 800 --repo "$repo" \
  --json headRefOid,baseRefOid,files,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,files:[.files[].path],checks:[.statusCheckRollup[]|{name,status,conclusion}]}'

base="$(gh pr view 800 --repo "$repo" --json baseRefOid --jq '.baseRefOid')"
printf '%s\n' '== changed-file scope and diff integrity =='
git diff --name-status "$base" "$head"
git diff --check "$base" "$head"

printf '%s\n' '== workflow test commands and safeguards =='
nl -ba .github/workflows/strix-changed-path-quality-ci.yml | sed -n '1,180p'
rg -n -C 3 \
  'test_strix_quick_gate|coverage.*pytest|pytest|permissions:|contents:|persist-credentials|require-hashes|only-binary|git (push|commit|tag)|gh (api|pr)|curl.*-X' \
  .github/workflows/strix-changed-path-quality-ci.yml || true

printf '%s\n' '== normalizer and downstream path consumers =='
rg -n -C 10 \
  'normalize_changed_file_path|allowed|raw.*\.\.|\.\.|realpath|read -r|printf|git diff|eval|sh -c|bash -c' \
  scripts/ci/strix_quick_gate.sh

printf '%s\n' '== shell regression suite path-policy cases =='
rg -n -C 4 \
  'Unicode|unicode|bidi|lookalike|STRIX_TEST_CHANGED_FILES_OVERRIDE|normalize_changed_file_path' \
  scripts/ci/test_strix_quick_gate.sh || true

printf '%s\n' '== regression-contract outlines =='
ast-grep outline tests/test_strix_changed_path_policy.py --items all
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all

Length of output: 6376


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== workflow definition =='
awk '{ printf "%6d\t%s\n", NR, $0 }' .github/workflows/strix-changed-path-quality-ci.yml

printf '%s\n' '== workflow test commands, permissions, pinning, and mutation indicators =='
rg -n -C 4 \
  'test_strix_quick_gate|coverage.*pytest|pytest|permissions:|contents:|persist-credentials|require-hashes|only-binary|git (push|commit|tag)|gh (api|pr)|curl.*-X' \
  .github/workflows/strix-changed-path-quality-ci.yml || true

printf '%s\n' '== changed-path normalizer and path consumers =='
rg -n -C 12 \
  'normalize_changed_file_path|allowed|raw.*\.\.|\.\.|realpath|read -r|printf|git diff|eval|sh -c|bash -c' \
  scripts/ci/strix_quick_gate.sh

printf '%s\n' '== shell regression suite path-policy cases =='
rg -n -C 5 \
  'Unicode|unicode|bidi|lookalike|STRIX_TEST_CHANGED_FILES_OVERRIDE|normalize_changed_file_path' \
  scripts/ci/test_strix_quick_gate.sh || true

printf '%s\n' '== Python regression-contract structure =='
ast-grep outline tests/test_strix_changed_path_policy.py --items all || true
ast-grep outline tests/test_strix_workflow_dependency_hashes.py --items all || true

printf '%s\n' '== Python regression-contract assertions =='
rg -n -C 4 \
  'Packrat|comma|parenthes|traversal|absolute|control|whitespace|backslash|shell|Unicode|out.of.root|require-hashes|only-binary|test_strix_quick_gate' \
  tests/test_strix_changed_path_policy.py \
  tests/test_strix_workflow_dependency_hashes.py || true

Length of output: 83323


@seonghobae Exact-head review verdict: request changes.

I verified the checked-out commit, requested commit, and live PR head as c51bf92cfa614c83d63bee73bc069ebd242a941c. The protected base is e6fc91416c4fb13febd07b985c6e9c74fe888306.

I found one actionable defect.

  • Line 61 in .github/workflows/strix-changed-path-quality-ci.yml runs only python -m coverage run -m pytest tests -q.
  • The workflow does not run scripts/ci/test_strix_quick_gate.sh.
  • The shell suite contains changed-path regressions that pytest tests does not execute.
  • These regressions include Unicode slash-lookalike rejection and bidi-control rejection at Lines 8989-8995.
  • Therefore, a successful exact-head-path-policy job does not verify all central changed-path regressions.

Add the following command to the verification step. Keep the existing pytest command.

bash scripts/ci/test_strix_quick_gate.sh

The remaining inspected controls are correctly bounded. The normalizer rejects raw .. components before normalization. It allows only the added comma and ASCII parentheses. The workflow uses read-only permissions, explicit-head checkout, disabled persisted credentials, immutable action revisions, and binary-only hash-verified dependencies.

I did not approve the pull request.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

/opencode

Perform an independent read-only review of exact current head c51bf92cfa614c83d63bee73bc069ebd242a941c. Inspect the legal Git path allowlist change, raw .. rejection before normalization, shell-safe argument handling, immutable/hash-locked quality workflow, full-suite coverage execution, exact-head binding, resolved review history, and supply-chain/security evidence. Do not mutate the branch, update the base, synthesize approval, or merge. Publish a formal current-head review only from complete evidence.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact current head c51bf92cfa614c83d63bee73bc069ebd242a941c without changing the branch or merging. Verify the path-policy trust boundary, traversal rejection, exact-head workflow execution, hash-locked dependencies, current-head tests/coverage, and resolved prior findings. Submit a formal review only when the evidence supports it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants